import { defineStore } from 'pinia'
import { ref } from 'vue'
import { GetMemberProfile } from '@/api/user'

// 定义 Store
export const useUserStore = defineStore(
  'userStore',
  () => {
    const token = ref('') // 用户登录后获取的 token 信息，用于身份验证和授权等操作。
    const userInfo = ref(null)
    const getUserInfo = async () => {
      const res = await GetMemberProfile()
      userInfo.value = res.data.result
    }
    // 获取用户信息的方法。
    const setUserInfo = (obj) => {
      userInfo.value = obj
    }
    const setToken = (newToken) => (token.value = newToken) // 设置 token 信息的方法。
    const clearToken = () => (token.value = '') // 清除 token 信息的方法。

    return { token, userInfo, getUserInfo, setUserInfo, setToken, clearToken }
  },

  // TODO: 持久化
  {
    persist: {
      paths: ['token'], // 需要进行持久化的数据字段。
      storage: {
        setItem(key, val) {
          uni.setStorageSync(key, val)
        },
        getItem(key) {
          return uni.getStorageSync(key)
        },
      },
    },
  },
)
